#ifndef CUFFTDX_FFT_20_FP64_INV_PTX_HPP
#define CUFFTDX_FFT_20_FP64_INV_PTX_HPP



template<> __forceinline__ __device__ void cufftdx_private_function<581, double, 1>(cufftdx::detail::complex<double> *rmem, unsigned smem){

asm volatile (R"({
.reg .f64 fd<409>;
.reg .b64 rd<2>;
add.f64 fd81, %50, %82;
add.f64 fd82, %40, fd81;
add.f64 fd83, %61, %72;
add.f64 fd84, fd83, fd82;
add.f64 fd85, %52, %84;
add.f64 fd86, %41, fd85;
add.f64 fd87, %63, %73;
add.f64 fd88, fd87, fd86;
fma.rn.f64 fd89, fd81, 0d3FD3C6EF372FE950, %40;
mul.f64 fd90, fd83, 0d3FE9E3779B97F4A8;
sub.f64 fd91, fd89, fd90;
sub.f64 fd92, %52, %84;
mul.f64 fd93, fd92, 0d3FEE6F0E134454FF;
sub.f64 fd94, %63, %73;
fma.rn.f64 fd95, fd94, 0d3FE2CF2304755A5E, fd93;
sub.f64 fd96, fd91, fd95;
add.f64 fd97, fd95, fd91;
mul.f64 fd98, fd81, 0d3FE9E3779B97F4A8;
sub.f64 fd99, %40, fd98;
fma.rn.f64 fd100, fd83, 0d3FD3C6EF372FE950, fd99;
mul.f64 fd101, fd92, 0d3FE2CF2304755A5E;
mul.f64 fd102, fd94, 0d3FEE6F0E134454FF;
sub.f64 fd103, fd101, fd102;
sub.f64 fd104, fd100, fd103;
add.f64 fd105, fd103, fd100;
fma.rn.f64 fd106, fd85, 0d3FD3C6EF372FE950, %41;
mul.f64 fd107, fd87, 0d3FE9E3779B97F4A8;
sub.f64 fd108, fd106, fd107;
sub.f64 fd109, %50, %82;
mul.f64 fd110, fd109, 0d3FEE6F0E134454FF;
sub.f64 fd111, %61, %72;
fma.rn.f64 fd112, fd111, 0d3FE2CF2304755A5E, fd110;
add.f64 fd113, fd112, fd108;
sub.f64 fd114, fd108, fd112;
mul.f64 fd115, fd85, 0d3FE9E3779B97F4A8;
sub.f64 fd116, %41, fd115;
fma.rn.f64 fd117, fd87, 0d3FD3C6EF372FE950, fd116;
mul.f64 fd118, fd109, 0d3FE2CF2304755A5E;
mul.f64 fd119, fd111, 0d3FEE6F0E134454FF;
sub.f64 fd120, fd118, fd119;
add.f64 fd121, fd120, fd117;
sub.f64 fd122, fd117, fd120;
add.f64 fd123, %56, %88;
add.f64 fd124, %45, fd123;
add.f64 fd125, %66, %77;
add.f64 fd126, fd125, fd124;
add.f64 fd127, %57, %89;
add.f64 fd128, %47, fd127;
add.f64 fd129, %68, %79;
add.f64 fd130, fd129, fd128;
fma.rn.f64 fd131, fd123, 0d3FD3C6EF372FE950, %45;
mul.f64 fd132, fd125, 0d3FE9E3779B97F4A8;
sub.f64 fd133, fd131, fd132;
sub.f64 fd134, %57, %89;
mul.f64 fd135, fd134, 0d3FEE6F0E134454FF;
sub.f64 fd136, %68, %79;
fma.rn.f64 fd137, fd136, 0d3FE2CF2304755A5E, fd135;
sub.f64 fd138, fd133, fd137;
add.f64 fd139, fd137, fd133;
mul.f64 fd140, fd123, 0d3FE9E3779B97F4A8;
sub.f64 fd141, %45, fd140;
fma.rn.f64 fd142, fd125, 0d3FD3C6EF372FE950, fd141;
mul.f64 fd143, fd134, 0d3FE2CF2304755A5E;
mul.f64 fd144, fd136, 0d3FEE6F0E134454FF;
sub.f64 fd145, fd143, fd144;
sub.f64 fd146, fd142, fd145;
add.f64 fd147, fd145, fd142;
fma.rn.f64 fd148, fd127, 0d3FD3C6EF372FE950, %47;
mul.f64 fd149, fd129, 0d3FE9E3779B97F4A8;
sub.f64 fd150, fd148, fd149;
sub.f64 fd151, %56, %88;
mul.f64 fd152, fd151, 0d3FEE6F0E134454FF;
sub.f64 fd153, %66, %77;
fma.rn.f64 fd154, fd153, 0d3FE2CF2304755A5E, fd152;
add.f64 fd155, fd154, fd150;
sub.f64 fd156, fd150, fd154;
mul.f64 fd157, fd127, 0d3FE9E3779B97F4A8;
sub.f64 fd158, %47, fd157;
fma.rn.f64 fd159, fd129, 0d3FD3C6EF372FE950, fd158;
mul.f64 fd160, fd151, 0d3FE2CF2304755A5E;
mul.f64 fd161, fd153, 0d3FEE6F0E134454FF;
sub.f64 fd162, fd160, fd161;
add.f64 fd163, fd162, fd159;
sub.f64 fd164, fd159, fd162;
mul.f64 fd165, fd138, 0d3FE9E3779B97F4A8;
mul.f64 fd166, fd155, 0d3FE2CF2304755A5E;
sub.f64 fd167, fd165, fd166;
mul.f64 fd168, fd155, 0d3FE9E3779B97F4A8;
fma.rn.f64 fd169, fd138, 0d3FE2CF2304755A5E, fd168;
mul.f64 fd170, fd146, 0d3FD3C6EF372FE950;
mul.f64 fd171, fd163, 0d3FEE6F0E134454FF;
sub.f64 fd172, fd170, fd171;
mul.f64 fd173, fd163, 0d3FD3C6EF372FE950;
fma.rn.f64 fd174, fd146, 0d3FEE6F0E134454FF, fd173;
mul.f64 fd175, fd147, 0dBFD3C6EF372FE950;
mul.f64 fd176, fd164, 0d3FEE6F0E134454FF;
sub.f64 fd177, fd175, fd176;
mul.f64 fd178, fd164, 0dBFD3C6EF372FE950;
fma.rn.f64 fd179, fd147, 0d3FEE6F0E134454FF, fd178;
mul.f64 fd180, fd139, 0dBFE9E3779B97F4A8;
mul.f64 fd181, fd156, 0d3FE2CF2304755A5E;
sub.f64 fd182, fd180, fd181;
mul.f64 fd183, fd156, 0dBFE9E3779B97F4A8;
fma.rn.f64 fd184, fd139, 0d3FE2CF2304755A5E, fd183;
add.f64 fd185, fd84, fd126;
add.f64 fd186, fd88, fd130;
sub.f64 fd187, fd84, fd126;
sub.f64 fd188, fd88, fd130;
add.f64 fd189, fd96, fd167;
add.f64 fd190, fd113, fd169;
sub.f64 fd191, fd96, fd167;
sub.f64 fd192, fd113, fd169;
add.f64 fd193, fd104, fd172;
add.f64 fd194, fd121, fd174;
sub.f64 fd195, fd104, fd172;
sub.f64 fd196, fd121, fd174;
add.f64 fd197, fd105, fd177;
add.f64 fd198, fd122, fd179;
sub.f64 fd199, fd105, fd177;
sub.f64 fd200, fd122, fd179;
add.f64 fd201, fd97, fd182;
add.f64 fd202, fd114, fd184;
sub.f64 fd203, fd97, fd182;
sub.f64 fd204, fd114, fd184;
add.f64 fd205, %53, %85;
add.f64 fd206, %42, fd205;
add.f64 fd207, %64, %74;
add.f64 fd208, fd207, fd206;
add.f64 fd209, %55, %87;
add.f64 fd210, %44, fd209;
add.f64 fd211, %65, %76;
add.f64 fd212, fd211, fd210;
fma.rn.f64 fd213, fd205, 0d3FD3C6EF372FE950, %42;
mul.f64 fd214, fd207, 0d3FE9E3779B97F4A8;
sub.f64 fd215, fd213, fd214;
sub.f64 fd216, %55, %87;
mul.f64 fd217, fd216, 0d3FEE6F0E134454FF;
sub.f64 fd218, %65, %76;
fma.rn.f64 fd219, fd218, 0d3FE2CF2304755A5E, fd217;
sub.f64 fd220, fd215, fd219;
add.f64 fd221, fd219, fd215;
mul.f64 fd222, fd205, 0d3FE9E3779B97F4A8;
sub.f64 fd223, %42, fd222;
fma.rn.f64 fd224, fd207, 0d3FD3C6EF372FE950, fd223;
mul.f64 fd225, fd216, 0d3FE2CF2304755A5E;
mul.f64 fd226, fd218, 0d3FEE6F0E134454FF;
sub.f64 fd227, fd225, fd226;
sub.f64 fd228, fd224, fd227;
add.f64 fd229, fd227, fd224;
fma.rn.f64 fd230, fd209, 0d3FD3C6EF372FE950, %44;
mul.f64 fd231, fd211, 0d3FE9E3779B97F4A8;
sub.f64 fd232, fd230, fd231;
sub.f64 fd233, %53, %85;
mul.f64 fd234, fd233, 0d3FEE6F0E134454FF;
sub.f64 fd235, %64, %74;
fma.rn.f64 fd236, fd235, 0d3FE2CF2304755A5E, fd234;
add.f64 fd237, fd236, fd232;
sub.f64 fd238, fd232, fd236;
mul.f64 fd239, fd209, 0d3FE9E3779B97F4A8;
sub.f64 fd240, %44, fd239;
fma.rn.f64 fd241, fd211, 0d3FD3C6EF372FE950, fd240;
mul.f64 fd242, fd233, 0d3FE2CF2304755A5E;
mul.f64 fd243, fd235, 0d3FEE6F0E134454FF;
sub.f64 fd244, fd242, fd243;
add.f64 fd245, fd244, fd241;
sub.f64 fd246, fd241, fd244;
add.f64 fd247, %58, %90;
add.f64 fd248, %48, fd247;
add.f64 fd249, %69, %80;
add.f64 fd250, fd249, fd248;
add.f64 fd251, %60, %91;
add.f64 fd252, %49, fd251;
add.f64 fd253, %71, %81;
add.f64 fd254, fd253, fd252;
fma.rn.f64 fd255, fd247, 0d3FD3C6EF372FE950, %48;
mul.f64 fd256, fd249, 0d3FE9E3779B97F4A8;
sub.f64 fd257, fd255, fd256;
sub.f64 fd258, %60, %91;
mul.f64 fd259, fd258, 0d3FEE6F0E134454FF;
sub.f64 fd260, %71, %81;
fma.rn.f64 fd261, fd260, 0d3FE2CF2304755A5E, fd259;
sub.f64 fd262, fd257, fd261;
add.f64 fd263, fd261, fd257;
mul.f64 fd264, fd247, 0d3FE9E3779B97F4A8;
sub.f64 fd265, %48, fd264;
fma.rn.f64 fd266, fd249, 0d3FD3C6EF372FE950, fd265;
mul.f64 fd267, fd258, 0d3FE2CF2304755A5E;
mul.f64 fd268, fd260, 0d3FEE6F0E134454FF;
sub.f64 fd269, fd267, fd268;
sub.f64 fd270, fd266, fd269;
add.f64 fd271, fd269, fd266;
fma.rn.f64 fd272, fd251, 0d3FD3C6EF372FE950, %49;
mul.f64 fd273, fd253, 0d3FE9E3779B97F4A8;
sub.f64 fd274, fd272, fd273;
sub.f64 fd275, %58, %90;
mul.f64 fd276, fd275, 0d3FEE6F0E134454FF;
sub.f64 fd277, %69, %80;
fma.rn.f64 fd278, fd277, 0d3FE2CF2304755A5E, fd276;
add.f64 fd279, fd278, fd274;
sub.f64 fd280, fd274, fd278;
mul.f64 fd281, fd251, 0d3FE9E3779B97F4A8;
sub.f64 fd282, %49, fd281;
fma.rn.f64 fd283, fd253, 0d3FD3C6EF372FE950, fd282;
mul.f64 fd284, fd275, 0d3FE2CF2304755A5E;
mul.f64 fd285, fd277, 0d3FEE6F0E134454FF;
sub.f64 fd286, fd284, fd285;
add.f64 fd287, fd286, fd283;
sub.f64 fd288, fd283, fd286;
mul.f64 fd289, fd262, 0d3FE9E3779B97F4A8;
mul.f64 fd290, fd279, 0d3FE2CF2304755A5E;
sub.f64 fd291, fd289, fd290;
mul.f64 fd292, fd279, 0d3FE9E3779B97F4A8;
fma.rn.f64 fd293, fd262, 0d3FE2CF2304755A5E, fd292;
mul.f64 fd294, fd270, 0d3FD3C6EF372FE950;
mul.f64 fd295, fd287, 0d3FEE6F0E134454FF;
sub.f64 fd296, fd294, fd295;
mul.f64 fd297, fd287, 0d3FD3C6EF372FE950;
fma.rn.f64 fd298, fd270, 0d3FEE6F0E134454FF, fd297;
mul.f64 fd299, fd271, 0dBFD3C6EF372FE950;
mul.f64 fd300, fd288, 0d3FEE6F0E134454FF;
sub.f64 fd301, fd299, fd300;
mul.f64 fd302, fd288, 0dBFD3C6EF372FE950;
fma.rn.f64 fd303, fd271, 0d3FEE6F0E134454FF, fd302;
mul.f64 fd304, fd263, 0dBFE9E3779B97F4A8;
mul.f64 fd305, fd280, 0d3FE2CF2304755A5E;
sub.f64 fd306, fd304, fd305;
mul.f64 fd307, fd280, 0dBFE9E3779B97F4A8;
fma.rn.f64 fd308, fd263, 0d3FE2CF2304755A5E, fd307;
add.f64 fd309, fd208, fd250;
add.f64 fd310, fd212, fd254;
sub.f64 fd311, fd208, fd250;
sub.f64 fd312, fd212, fd254;
add.f64 fd313, fd220, fd291;
add.f64 fd314, fd237, fd293;
sub.f64 fd315, fd220, fd291;
sub.f64 fd316, fd237, fd293;
add.f64 fd317, fd228, fd296;
add.f64 fd318, fd245, fd298;
sub.f64 fd319, fd228, fd296;
sub.f64 fd320, fd245, fd298;
add.f64 fd321, fd229, fd301;
add.f64 fd322, fd246, fd303;
sub.f64 fd323, fd229, fd301;
sub.f64 fd324, fd246, fd303;
add.f64 fd325, fd221, fd306;
add.f64 fd326, fd238, fd308;
sub.f64 fd327, fd221, fd306;
sub.f64 fd328, fd238, fd308;
mul.f64 fd329, fd313, 0d3FEE6F0E134454FF;
mul.f64 fd330, fd314, 0d3FD3C6EF372FE950;
sub.f64 fd331, fd329, fd330;
mul.f64 fd332, fd314, 0d3FEE6F0E134454FF;
fma.rn.f64 fd333, fd313, 0d3FD3C6EF372FE950, fd332;
mul.f64 fd334, fd317, 0d3FE9E3779B97F4A8;
mul.f64 fd335, fd318, 0d3FE2CF2304755A5E;
sub.f64 fd336, fd334, fd335;
mul.f64 fd337, fd318, 0d3FE9E3779B97F4A8;
fma.rn.f64 fd338, fd317, 0d3FE2CF2304755A5E, fd337;
mul.f64 fd339, fd321, 0d3FE2CF2304755A5E;
mul.f64 fd340, fd322, 0d3FE9E3779B97F4A8;
sub.f64 fd341, fd339, fd340;
mul.f64 fd342, fd322, 0d3FE2CF2304755A5E;
fma.rn.f64 fd343, fd321, 0d3FE9E3779B97F4A8, fd342;
mul.f64 fd344, fd325, 0d3FD3C6EF372FE950;
mul.f64 fd345, fd326, 0d3FEE6F0E134454FF;
sub.f64 fd346, fd344, fd345;
mul.f64 fd347, fd326, 0d3FD3C6EF372FE950;
fma.rn.f64 fd348, fd325, 0d3FEE6F0E134454FF, fd347;
mul.f64 fd349, fd315, 0dBFD3C6EF372FE950;
mul.f64 fd350, fd316, 0d3FEE6F0E134454FF;
sub.f64 fd351, fd349, fd350;
mul.f64 fd352, fd316, 0dBFD3C6EF372FE950;
fma.rn.f64 fd353, fd315, 0d3FEE6F0E134454FF, fd352;
mul.f64 fd354, fd319, 0dBFE2CF2304755A5E;
mul.f64 fd355, fd320, 0d3FE9E3779B97F4A8;
sub.f64 fd356, fd354, fd355;
mul.f64 fd357, fd320, 0dBFE2CF2304755A5E;
fma.rn.f64 fd358, fd319, 0d3FE9E3779B97F4A8, fd357;
mul.f64 fd359, fd323, 0dBFE9E3779B97F4A8;
mul.f64 fd360, fd324, 0d3FE2CF2304755A5E;
sub.f64 fd361, fd359, fd360;
mul.f64 fd362, fd324, 0dBFE9E3779B97F4A8;
fma.rn.f64 fd363, fd323, 0d3FE2CF2304755A5E, fd362;
mul.f64 fd364, fd327, 0dBFEE6F0E134454FF;
mul.f64 fd365, fd328, 0d3FD3C6EF372FE950;
sub.f64 fd366, fd364, fd365;
mul.f64 fd367, fd328, 0dBFEE6F0E134454FF;
fma.rn.f64 fd368, fd327, 0d3FD3C6EF372FE950, fd367;
add.f64 %1, fd186, fd310;
add.f64 %0, fd185, fd309;
add.f64 %3, fd190, fd333;
add.f64 %2, fd189, fd331;
add.f64 %5, fd194, fd338;
add.f64 %4, fd193, fd336;
add.f64 %7, fd198, fd343;
add.f64 %6, fd197, fd341;
add.f64 %9, fd202, fd348;
add.f64 %8, fd201, fd346;
add.f64 %11, fd188, fd311;
sub.f64 %10, fd187, fd312;
add.f64 %13, fd192, fd353;
add.f64 %12, fd191, fd351;
add.f64 %15, fd196, fd358;
add.f64 %14, fd195, fd356;
add.f64 %17, fd200, fd363;
add.f64 %16, fd199, fd361;
add.f64 %19, fd204, fd368;
add.f64 %18, fd203, fd366;
sub.f64 %21, fd186, fd310;
sub.f64 %20, fd185, fd309;
sub.f64 %23, fd190, fd333;
sub.f64 %22, fd189, fd331;
sub.f64 %25, fd194, fd338;
sub.f64 %24, fd193, fd336;
sub.f64 %27, fd198, fd343;
sub.f64 %26, fd197, fd341;
sub.f64 %29, fd202, fd348;
sub.f64 %28, fd201, fd346;
sub.f64 %31, fd188, fd311;
add.f64 %30, fd187, fd312;
sub.f64 %33, fd192, fd353;
sub.f64 %32, fd191, fd351;
sub.f64 %35, fd196, fd358;
sub.f64 %34, fd195, fd356;
sub.f64 %37, fd200, fd363;
sub.f64 %36, fd199, fd361;
sub.f64 %39, fd204, fd368;
sub.f64 %38, fd203, fd366;
})"
     : "=d"(rmem[0].x), "=d"(rmem[0].y), "=d"(rmem[1].x), "=d"(rmem[1].y), "=d"(rmem[2].x), "=d"(rmem[2].y), "=d"(rmem[3].x), "=d"(rmem[3].y), "=d"(rmem[4].x), "=d"(rmem[4].y), "=d"(rmem[5].x), "=d"(rmem[5].y), "=d"(rmem[6].x), "=d"(rmem[6].y), "=d"(rmem[7].x), "=d"(rmem[7].y), "=d"(rmem[8].x), "=d"(rmem[8].y), "=d"(rmem[9].x), "=d"(rmem[9].y), "=d"(rmem[10].x), "=d"(rmem[10].y), "=d"(rmem[11].x), "=d"(rmem[11].y), "=d"(rmem[12].x), "=d"(rmem[12].y), "=d"(rmem[13].x), "=d"(rmem[13].y), "=d"(rmem[14].x), "=d"(rmem[14].y), "=d"(rmem[15].x), "=d"(rmem[15].y), "=d"(rmem[16].x), "=d"(rmem[16].y), "=d"(rmem[17].x), "=d"(rmem[17].y), "=d"(rmem[18].x), "=d"(rmem[18].y), "=d"(rmem[19].x), "=d"(rmem[19].y): "d"(rmem[0].x), "d"(rmem[0].y), "d"(rmem[1].x), "d"(rmem[1].y), "d"(rmem[1].y), "d"(rmem[2].x), "d"(rmem[2].y), "d"(rmem[2].y), "d"(rmem[3].x), "d"(rmem[3].y), "d"(rmem[4].x), "d"(rmem[4].y), "d"(rmem[4].y), "d"(rmem[5].x), "d"(rmem[5].y), "d"(rmem[5].y), "d"(rmem[6].x), "d"(rmem[6].y), "d"(rmem[7].x), "d"(rmem[7].y), "d"(rmem[7].y), "d"(rmem[8].x), "d"(rmem[8].y), "d"(rmem[8].y), "d"(rmem[9].x), "d"(rmem[9].y), "d"(rmem[10].x), "d"(rmem[10].y), "d"(rmem[10].y), "d"(rmem[11].x), "d"(rmem[11].y), "d"(rmem[11].y), "d"(rmem[12].x), "d"(rmem[12].y), "d"(rmem[13].x), "d"(rmem[13].y), "d"(rmem[13].y), "d"(rmem[14].x), "d"(rmem[14].y), "d"(rmem[14].y), "d"(rmem[15].x), "d"(rmem[15].y), "d"(rmem[16].x), "d"(rmem[16].y), "d"(rmem[16].y), "d"(rmem[17].x), "d"(rmem[17].y), "d"(rmem[17].y), "d"(rmem[18].x), "d"(rmem[18].y), "d"(rmem[19].x), "d"(rmem[19].y));
};


#endif
